using System;
using System.Reflection;
using System.Runtime.InteropServices;
using Kitware.mummy.Runtime;

namespace Kitware.VTK;

/// <summary>
///    vtkOrientationMarkerWidget
/// </summary>
/// <remarks>
///    2D widget for manipulating a marker prop
///
/// This class provides support for interactively manipulating the position,
/// size, and apparent orientation of a prop that represents an orientation
/// marker.  This class works by adding its internal renderer to an external
/// "parent" renderer on a different layer.  The input orientation marker is
/// rendered as an overlay on the parent renderer and, thus, appears superposed
/// over all props in the parent's scene.  The camera view of the orientation
/// the marker is made to match that of the parent's by means of an observer
/// mechanism, giving the illusion that the orientation of the marker reflects
/// that of the prop(s) in the parent's scene.
///
/// The widget listens to left mouse button and mouse movement events. It will
/// change the cursor shape based on its location. If the cursor is over the
/// overlay renderer, it will change the cursor shape to a SIZEALL shape
/// or to a resize corner shape (e.g., SIZENW) if the cursor is near a corner.
/// If the left mouse button is pressed and held down while moving, the overlay
/// renderer, and hence, the orientation marker, is resized or moved.  I the case
/// of a resize operation, releasing the left mouse button causes the widget
/// to enforce its renderer to be square.  The diagonally opposite corner to the
/// one moved is repositioned such that all edges of the renderer have the same
/// length: the minimum.
///
/// To use this object, there are two key steps: 1) invoke SetInteractor() with
/// the argument of the method a vtkRenderWindowInteractor, and 2) invoke
/// SetOrientationMarker with an instance of vtkProp (see caveats below).
/// Specifically, vtkAxesActor and vtkAnnotatedCubeActor are two classes
/// designed to work with this class.  A composite orientation marker can be
/// generated by adding instances of vtkAxesActor and vtkAnnotatedCubeActor to a
/// vtkPropAssembly, which can then be set as the input orientation marker.
/// The widget can be also be set up in a non-interactive fashion by setting
/// Ineractive to Off and sizing/placing the overlay renderer in its parent
/// renderer by calling the widget's SetViewport method.
///
/// @par Thanks:
/// This class was based originally on Paraview's vtkPVAxesWidget.
///
/// @warning
/// The input orientation marker prop should calculate its bounds as though they
/// are symmetric about it's origin.  This must currently be done to correctly
/// implement the camera synchronization between the ivar renderer and the
/// renderer associated with the set interactor.  Importantly, the InteractorStyle
/// associated with the interactor must be of the type vtkInteractorStyle*Camera.
/// Where desirable, the parent renderer should be set by the SetDefaultRenderer
/// method.  The parent renderer's number of layers is modified to 2 where
/// required.
///
/// </remarks>
/// <seealso>
///
/// vtkInteractorObserver vtkXYPlotWidget vtkScalarBarWidget vtkAxesActor
/// vtkAnnotatedCubeActor
/// </seealso>
public class vtkOrientationMarkerWidget : vtkInteractorObserver
{
	/// <summary>
	/// Automatically generated type registration mechanics.
	/// </summary>
	public new const string MRFullTypeName = "Kitware.VTK.vtkOrientationMarkerWidget";

	/// <summary>
	/// Automatically generated type registration mechanics.
	/// </summary>
	public new static readonly string MRClassNameKey;

	/// <summary>
	/// Automatically generated type registration mechanics.
	/// </summary>
	static vtkOrientationMarkerWidget()
	{
		MRClassNameKey = "class vtkOrientationMarkerWidget";
		Methods.RegisterType(Assembly.GetExecutingAssembly(), MRClassNameKey, Type.GetType("Kitware.VTK.vtkOrientationMarkerWidget"));
	}

	/// <summary>
	/// Automatically generated constructor - called from generated code.
	/// DO NOT call directly.
	/// </summary>
	public vtkOrientationMarkerWidget(IntPtr rawCppThis, bool callDisposalMethod, bool strong)
		: base(rawCppThis, callDisposalMethod, strong)
	{
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern IntPtr vtkOrientationMarkerWidget_New(ref uint mteStatus, ref uint mteIndex, ref uint rawRefCount);

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public new static vtkOrientationMarkerWidget New()
	{
		vtkOrientationMarkerWidget result = null;
		uint mteStatus = 0u;
		uint mteIndex = uint.MaxValue;
		uint rawRefCount = 0u;
		IntPtr intPtr = vtkOrientationMarkerWidget_New(ref mteStatus, ref mteIndex, ref rawRefCount);
		if (IntPtr.Zero != intPtr)
		{
			result = (vtkOrientationMarkerWidget)Methods.CreateWrappedObject(mteStatus, mteIndex, rawRefCount, intPtr, callDisposalMethod: true, out var _);
		}
		return result;
	}

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public vtkOrientationMarkerWidget()
		: base(IntPtr.Zero, callDisposalMethod: false, strong: false)
	{
		uint mteStatus = 0u;
		uint mteIndex = uint.MaxValue;
		uint rawRefCount = 0u;
		IntPtr rawCppThis = vtkOrientationMarkerWidget_New(ref mteStatus, ref mteIndex, ref rawRefCount);
		SetCppThis(rawCppThis, callDisposalMethod: true, (mteStatus != 0 && rawRefCount >= 2) ? true : false);
	}

	/// <summary>
	/// Automatically generated protected Dispose method - called from
	/// public Dispose or the C# destructor. DO NOT call directly.
	/// </summary>
	protected override void Dispose(bool disposing)
	{
		base.Dispose(disposing);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_EndInteraction_01(HandleRef pThis);

	/// <summary>
	/// Ends any in progress interaction and resets border visibility
	/// </summary>
	public virtual void EndInteraction()
	{
		vtkOrientationMarkerWidget_EndInteraction_01(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_ExecuteCameraUpdateEvent_02(HandleRef pThis, HandleRef o, uint arg1, IntPtr calldata);

	/// <summary>
	/// Callback to keep the camera for the orientation marker up to date with the
	/// camera in the parent renderer.
	/// </summary>
	public void ExecuteCameraUpdateEvent(vtkObject o, uint arg1, IntPtr calldata)
	{
		vtkOrientationMarkerWidget_ExecuteCameraUpdateEvent_02(GetCppThis(), o?.GetCppThis() ?? default(HandleRef), arg1, calldata);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_GetInteractive_03(HandleRef pThis);

	/// <summary>
	/// Set/get whether to allow this widget to be interactively moved/scaled.
	/// Default is On.
	/// </summary>
	public virtual int GetInteractive()
	{
		return vtkOrientationMarkerWidget_GetInteractive_03(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_GetMaxDimensionSize_04(HandleRef pThis);

	/// <summary>
	/// Returns the maximum dimension (width and height) size limit in pixels for the widget.
	/// </summary>
	public virtual int GetMaxDimensionSize()
	{
		return vtkOrientationMarkerWidget_GetMaxDimensionSize_04(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_GetMinDimensionSize_05(HandleRef pThis);

	/// <summary>
	/// Returns the minimum dimension (width and height) size limit in pixels for the widget.
	/// </summary>
	public virtual int GetMinDimensionSize()
	{
		return vtkOrientationMarkerWidget_GetMinDimensionSize_05(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern long vtkOrientationMarkerWidget_GetNumberOfGenerationsFromBase_06(HandleRef pThis, string type);

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public override long GetNumberOfGenerationsFromBase(string type)
	{
		return vtkOrientationMarkerWidget_GetNumberOfGenerationsFromBase_06(GetCppThis(), type);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern long vtkOrientationMarkerWidget_GetNumberOfGenerationsFromBaseType_07(string type);

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public new static long GetNumberOfGenerationsFromBaseType(string type)
	{
		return vtkOrientationMarkerWidget_GetNumberOfGenerationsFromBaseType_07(type);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern IntPtr vtkOrientationMarkerWidget_GetOrientationMarker_08(HandleRef pThis, ref uint mteStatus, ref uint mteIndex, ref uint rawRefCount);

	/// <summary>
	/// Set/get the orientation marker to be displayed in this widget.
	/// </summary>
	public virtual vtkProp GetOrientationMarker()
	{
		vtkProp vtkProp2 = null;
		uint mteStatus = 0u;
		uint mteIndex = uint.MaxValue;
		uint rawRefCount = 0u;
		IntPtr intPtr = vtkOrientationMarkerWidget_GetOrientationMarker_08(GetCppThis(), ref mteStatus, ref mteIndex, ref rawRefCount);
		if (IntPtr.Zero != intPtr)
		{
			vtkProp2 = (vtkProp)Methods.CreateWrappedObject(mteStatus, mteIndex, rawRefCount, intPtr, callDisposalMethod: true, out var found);
			if (found)
			{
				vtkProp2.Register(null);
			}
		}
		return vtkProp2;
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern IntPtr vtkOrientationMarkerWidget_GetOutlineColor_09(HandleRef pThis);

	/// <summary>
	/// Set/get the color of the outline of this widget.  The outline is visible
	/// when (in interactive mode) the cursor is over this widget.
	/// Default is white (1,1,1).
	/// </summary>
	public IntPtr GetOutlineColor()
	{
		return vtkOrientationMarkerWidget_GetOutlineColor_09(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_GetShouldConstrainSize_10(HandleRef pThis);

	/// <summary>
	/// Set/get whether the widget should constrain the size to be within the min and max limits.
	/// Default is off (unconstrained).
	/// </summary>
	public virtual int GetShouldConstrainSize()
	{
		return vtkOrientationMarkerWidget_GetShouldConstrainSize_10(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_GetTolerance_11(HandleRef pThis);

	/// <summary>
	/// The tolerance representing the distance to the widget (in pixels)
	/// in which the cursor is considered to be on the widget, or on a
	/// widget feature (e.g., a corner point or edge).
	/// </summary>
	public virtual int GetTolerance()
	{
		return vtkOrientationMarkerWidget_GetTolerance_11(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_GetToleranceMaxValue_12(HandleRef pThis);

	/// <summary>
	/// The tolerance representing the distance to the widget (in pixels)
	/// in which the cursor is considered to be on the widget, or on a
	/// widget feature (e.g., a corner point or edge).
	/// </summary>
	public virtual int GetToleranceMaxValue()
	{
		return vtkOrientationMarkerWidget_GetToleranceMaxValue_12(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_GetToleranceMinValue_13(HandleRef pThis);

	/// <summary>
	/// The tolerance representing the distance to the widget (in pixels)
	/// in which the cursor is considered to be on the widget, or on a
	/// widget feature (e.g., a corner point or edge).
	/// </summary>
	public virtual int GetToleranceMinValue()
	{
		return vtkOrientationMarkerWidget_GetToleranceMinValue_13(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern IntPtr vtkOrientationMarkerWidget_GetViewport_14(HandleRef pThis);

	/// <summary>
	/// Set/get the viewport to position/size this widget.
	/// Coordinates are expressed as (xmin,ymin,xmax,ymax), where each
	/// coordinate is 0 &lt;= coordinate &lt;= 1.0.
	/// Default is bottom left corner (0,0,0.2,0.2).
	/// Note that this viewport is scaled with respect to the viewport of the
	/// current renderer i.e. if the viewport of the current renderer is
	/// (0.5, 0.5, 0.75, 0.75) and Viewport is set to (0, 0, 1, 1), the orientation
	/// marker will be confined to a viewport of (0.5, 0.5, 0.75, 0.75) in the
	/// render window.
	/// \sa SetCurrentRenderer()
	/// </summary>
	public virtual double[] GetViewport()
	{
		IntPtr intPtr = vtkOrientationMarkerWidget_GetViewport_14(GetCppThis());
		double[] array = null;
		if (IntPtr.Zero != intPtr)
		{
			array = new double[4];
			Marshal.Copy(intPtr, array, 0, array.Length);
		}
		return array;
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_GetViewport_15(HandleRef pThis, ref double _arg1, ref double _arg2, ref double _arg3, ref double _arg4);

	/// <summary>
	/// Set/get the viewport to position/size this widget.
	/// Coordinates are expressed as (xmin,ymin,xmax,ymax), where each
	/// coordinate is 0 &lt;= coordinate &lt;= 1.0.
	/// Default is bottom left corner (0,0,0.2,0.2).
	/// Note that this viewport is scaled with respect to the viewport of the
	/// current renderer i.e. if the viewport of the current renderer is
	/// (0.5, 0.5, 0.75, 0.75) and Viewport is set to (0, 0, 1, 1), the orientation
	/// marker will be confined to a viewport of (0.5, 0.5, 0.75, 0.75) in the
	/// render window.
	/// \sa SetCurrentRenderer()
	/// </summary>
	public virtual void GetViewport(ref double _arg1, ref double _arg2, ref double _arg3, ref double _arg4)
	{
		vtkOrientationMarkerWidget_GetViewport_15(GetCppThis(), ref _arg1, ref _arg2, ref _arg3, ref _arg4);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_GetViewport_16(HandleRef pThis, IntPtr _arg);

	/// <summary>
	/// Set/get the viewport to position/size this widget.
	/// Coordinates are expressed as (xmin,ymin,xmax,ymax), where each
	/// coordinate is 0 &lt;= coordinate &lt;= 1.0.
	/// Default is bottom left corner (0,0,0.2,0.2).
	/// Note that this viewport is scaled with respect to the viewport of the
	/// current renderer i.e. if the viewport of the current renderer is
	/// (0.5, 0.5, 0.75, 0.75) and Viewport is set to (0, 0, 1, 1), the orientation
	/// marker will be confined to a viewport of (0.5, 0.5, 0.75, 0.75) in the
	/// render window.
	/// \sa SetCurrentRenderer()
	/// </summary>
	public virtual void GetViewport(IntPtr _arg)
	{
		vtkOrientationMarkerWidget_GetViewport_16(GetCppThis(), _arg);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern double vtkOrientationMarkerWidget_GetZoom_17(HandleRef pThis);

	/// <summary>
	/// The zoom factor to modify the size of the marker within the widget.
	/// Default is 1.0.
	/// </summary>
	public virtual double GetZoom()
	{
		return vtkOrientationMarkerWidget_GetZoom_17(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern double vtkOrientationMarkerWidget_GetZoomMaxValue_18(HandleRef pThis);

	/// <summary>
	/// The zoom factor to modify the size of the marker within the widget.
	/// Default is 1.0.
	/// </summary>
	public virtual double GetZoomMaxValue()
	{
		return vtkOrientationMarkerWidget_GetZoomMaxValue_18(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern double vtkOrientationMarkerWidget_GetZoomMinValue_19(HandleRef pThis);

	/// <summary>
	/// The zoom factor to modify the size of the marker within the widget.
	/// Default is 1.0.
	/// </summary>
	public virtual double GetZoomMinValue()
	{
		return vtkOrientationMarkerWidget_GetZoomMinValue_19(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_InteractiveOff_20(HandleRef pThis);

	/// <summary>
	/// Set/get whether to allow this widget to be interactively moved/scaled.
	/// Default is On.
	/// </summary>
	public virtual void InteractiveOff()
	{
		vtkOrientationMarkerWidget_InteractiveOff_20(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_InteractiveOn_21(HandleRef pThis);

	/// <summary>
	/// Set/get whether to allow this widget to be interactively moved/scaled.
	/// Default is On.
	/// </summary>
	public virtual void InteractiveOn()
	{
		vtkOrientationMarkerWidget_InteractiveOn_21(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_IsA_22(HandleRef pThis, string type);

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public override int IsA(string type)
	{
		return vtkOrientationMarkerWidget_IsA_22(GetCppThis(), type);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern int vtkOrientationMarkerWidget_IsTypeOf_23(string type);

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public new static int IsTypeOf(string type)
	{
		return vtkOrientationMarkerWidget_IsTypeOf_23(type);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_Modified_24(HandleRef pThis);

	/// <summary>
	/// Need to reimplement this-&gt;Modified() because of the
	/// vtkSetVector4Macro/vtkGetVector4Macro use
	/// </summary>
	public override void Modified()
	{
		vtkOrientationMarkerWidget_Modified_24(GetCppThis());
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern IntPtr vtkOrientationMarkerWidget_NewInstance_26(HandleRef pThis, ref uint mteStatus, ref uint mteIndex, ref uint rawRefCount);

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public new vtkOrientationMarkerWidget NewInstance()
	{
		vtkOrientationMarkerWidget result = null;
		uint mteStatus = 0u;
		uint mteIndex = uint.MaxValue;
		uint rawRefCount = 0u;
		IntPtr intPtr = vtkOrientationMarkerWidget_NewInstance_26(GetCppThis(), ref mteStatus, ref mteIndex, ref rawRefCount);
		if (IntPtr.Zero != intPtr)
		{
			result = (vtkOrientationMarkerWidget)Methods.CreateWrappedObject(mteStatus, mteIndex, rawRefCount, intPtr, callDisposalMethod: true, out var _);
		}
		return result;
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern IntPtr vtkOrientationMarkerWidget_SafeDownCast_27(HandleRef o, ref uint mteStatus, ref uint mteIndex, ref uint rawRefCount);

	/// <summary>
	///             Undocumented Block
	/// </summary>
	public new static vtkOrientationMarkerWidget SafeDownCast(vtkObjectBase o)
	{
		vtkOrientationMarkerWidget vtkOrientationMarkerWidget2 = null;
		uint mteStatus = 0u;
		uint mteIndex = uint.MaxValue;
		uint rawRefCount = 0u;
		IntPtr intPtr = vtkOrientationMarkerWidget_SafeDownCast_27(o?.GetCppThis() ?? default(HandleRef), ref mteStatus, ref mteIndex, ref rawRefCount);
		if (IntPtr.Zero != intPtr)
		{
			vtkOrientationMarkerWidget2 = (vtkOrientationMarkerWidget)Methods.CreateWrappedObject(mteStatus, mteIndex, rawRefCount, intPtr, callDisposalMethod: true, out var found);
			if (found)
			{
				vtkOrientationMarkerWidget2.Register(null);
			}
		}
		return vtkOrientationMarkerWidget2;
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetEnabled_28(HandleRef pThis, int arg0);

	/// <summary>
	/// Enable/disable the widget. Default is 0 (disabled).
	/// </summary>
	public override void SetEnabled(int arg0)
	{
		vtkOrientationMarkerWidget_SetEnabled_28(GetCppThis(), arg0);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetInteractive_29(HandleRef pThis, int interact);

	/// <summary>
	/// Set/get whether to allow this widget to be interactively moved/scaled.
	/// Default is On.
	/// </summary>
	public void SetInteractive(int interact)
	{
		vtkOrientationMarkerWidget_SetInteractive_29(GetCppThis(), interact);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetOrientationMarker_30(HandleRef pThis, HandleRef prop);

	/// <summary>
	/// Set/get the orientation marker to be displayed in this widget.
	/// </summary>
	public virtual void SetOrientationMarker(vtkProp prop)
	{
		vtkOrientationMarkerWidget_SetOrientationMarker_30(GetCppThis(), prop?.GetCppThis() ?? default(HandleRef));
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetOutlineColor_31(HandleRef pThis, double r, double g, double b);

	/// <summary>
	/// Set/get the color of the outline of this widget.  The outline is visible
	/// when (in interactive mode) the cursor is over this widget.
	/// Default is white (1,1,1).
	/// </summary>
	public void SetOutlineColor(double r, double g, double b)
	{
		vtkOrientationMarkerWidget_SetOutlineColor_31(GetCppThis(), r, g, b);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetShouldConstrainSize_32(HandleRef pThis, int shouldConstrainSize);

	/// <summary>
	/// Set/get whether the widget should constrain the size to be within the min and max limits.
	/// Default is off (unconstrained).
	/// </summary>
	public void SetShouldConstrainSize(int shouldConstrainSize)
	{
		vtkOrientationMarkerWidget_SetShouldConstrainSize_32(GetCppThis(), shouldConstrainSize);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern byte vtkOrientationMarkerWidget_SetSizeConstraintDimensionSizes_33(HandleRef pThis, int minDimensionSize, int maxDimensionSize);

	/// <summary>
	/// Sets the minimum and maximum dimension (width and height) size limits for the widget.
	/// Validates the sizes are within tolerances before setting; ignoring otherwise.
	/// Default is 20, 500.
	/// Returns whether the sizes are valid and correctly set (true), or invalid (false).
	/// </summary>
	public bool SetSizeConstraintDimensionSizes(int minDimensionSize, int maxDimensionSize)
	{
		return (vtkOrientationMarkerWidget_SetSizeConstraintDimensionSizes_33(GetCppThis(), minDimensionSize, maxDimensionSize) != 0) ? true : false;
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetTolerance_34(HandleRef pThis, int _arg);

	/// <summary>
	/// The tolerance representing the distance to the widget (in pixels)
	/// in which the cursor is considered to be on the widget, or on a
	/// widget feature (e.g., a corner point or edge).
	/// </summary>
	public virtual void SetTolerance(int _arg)
	{
		vtkOrientationMarkerWidget_SetTolerance_34(GetCppThis(), _arg);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetViewport_35(HandleRef pThis, double _arg1, double _arg2, double _arg3, double _arg4);

	/// <summary>
	/// Set/get the viewport to position/size this widget.
	/// Coordinates are expressed as (xmin,ymin,xmax,ymax), where each
	/// coordinate is 0 &lt;= coordinate &lt;= 1.0.
	/// Default is bottom left corner (0,0,0.2,0.2).
	/// Note that this viewport is scaled with respect to the viewport of the
	/// current renderer i.e. if the viewport of the current renderer is
	/// (0.5, 0.5, 0.75, 0.75) and Viewport is set to (0, 0, 1, 1), the orientation
	/// marker will be confined to a viewport of (0.5, 0.5, 0.75, 0.75) in the
	/// render window.
	/// \sa SetCurrentRenderer()
	/// </summary>
	public virtual void SetViewport(double _arg1, double _arg2, double _arg3, double _arg4)
	{
		vtkOrientationMarkerWidget_SetViewport_35(GetCppThis(), _arg1, _arg2, _arg3, _arg4);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetViewport_36(HandleRef pThis, IntPtr _arg);

	/// <summary>
	/// Set/get the viewport to position/size this widget.
	/// Coordinates are expressed as (xmin,ymin,xmax,ymax), where each
	/// coordinate is 0 &lt;= coordinate &lt;= 1.0.
	/// Default is bottom left corner (0,0,0.2,0.2).
	/// Note that this viewport is scaled with respect to the viewport of the
	/// current renderer i.e. if the viewport of the current renderer is
	/// (0.5, 0.5, 0.75, 0.75) and Viewport is set to (0, 0, 1, 1), the orientation
	/// marker will be confined to a viewport of (0.5, 0.5, 0.75, 0.75) in the
	/// render window.
	/// \sa SetCurrentRenderer()
	/// </summary>
	public virtual void SetViewport(IntPtr _arg)
	{
		vtkOrientationMarkerWidget_SetViewport_36(GetCppThis(), _arg);
	}

	[DllImport("Kitware.VTK.InteractionWidgets.Unmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
	internal static extern void vtkOrientationMarkerWidget_SetZoom_37(HandleRef pThis, double _arg);

	/// <summary>
	/// The zoom factor to modify the size of the marker within the widget.
	/// Default is 1.0.
	/// </summary>
	public virtual void SetZoom(double _arg)
	{
		vtkOrientationMarkerWidget_SetZoom_37(GetCppThis(), _arg);
	}
}
